package com.xyhy.core.base.repos;

import org.springframework.data.repository.NoRepositoryBean;

import com.xyhy.core.base.entity.ITreeNode;

import java.util.List;

/**
 * ITreeNode对象的操作类
 *
 * @param <T>
 */
@NoRepositoryBean
public interface TreeNodeCrudRepos<T extends ITreeNode<ID>, ID> extends NamedCrudRepos<T, ID> {
  /**
   * 忽略名称大小写，查询第一个指定父节点下名称相同的对象
   *
   * @param name     对象名称
   * @param parentId 父节点ID
   * @return
   */
  T findFirstByNameIgnoringCaseAndParentId(String name, ID parentId);

  /**
   * 查询父节点下的所有对象
   *
   * @param parentId 父节点ID
   * @return
   */
  List<T> findByParentId(ID parentId);

  /**
   * 查询指定路径下的所有对象
   *
   * @param path 指定节点路径
   * @return
   */
  List<T> findByPathLike(String path);
}
